const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require("clean-webpack-plugin");
const path = require('path');
const webpack = require('webpack');
module.exports = {
  devtool: 'eval-source-map',
  entry:  {
    vendors:['jquery',__dirname +'/static/hammer.min.js'],
    main:__dirname + "/src/main.js",//已多次提及的唯一入口文件
    // main2:__dirname + "/src/main2.js",
  },
  output: {
    path: path.resolve("dist"),//打包后的文件存放的地方
    filename: "[name]-[chunkHash:8].js"//模块指纹
  },
  resolve: {
    alias: {
      'vue': 'vue/dist/vue.js'  //  指向node_modules/vue/dist/vue.js
    }
  },
  devServer: {
    // contentBase: "./",//本地服务器所加载的页面所在的目录
    historyApiFallback: true,//不跳转
    inline: true//实时刷新
  } ,
  module:{
    rules:[
      // {
      //     test: /\.(js|vue)$/,
      //     loader: 'eslint-loader',
      //     // enforce这个属性要注意一下，之前的preLoader被剔除了，但webpack2还是提供了代替方案。
      //     enforce: "pre",
      //     include: [path.resolve('src'), path.resolve('service')],
      //     // exclude: /node_modules/,
      //     options: {
      //       configFile:  path.resolve('.eslintrc'), // 指定eslint的配置文件在哪里
      //       failOnWarning: true, // eslint报warning了就终止webpack编译
      //       failOnError: true, // eslint报error了就终止webpack编译
      //       cache: true, // 开启eslint的cache，cache存在node_modules/.cache目录里
      //       formatter: require('eslint-friendly-formatter')  //将错误处的代码打印到终端
      //     }
      // },

      {
        test: /\.vue$/,
        use: {
          loader: 'vue-loader'
        }
      },
      {
        test:/\.css$/,
        exclude: path.resolve('src/public/css/global'),
        use:[
        {
          loader:"style-loader"  // style-loader 在前面否则报错
        },
        {
          loader:"css-loader",
          options: {
                    modules: true, // 指定启用css modules
                    localIdentName: '[name]__[local]--[hash:base64:5]' // 指定css的类名格式
                }
        },
        ]
      },
      {
        test:/\.css$/,
        include: path.resolve('src/public/css/global'), // 全局样式
        use:[
        {
          loader:"style-loader"  // style-loader 在前面否则报错
        },
        {
          loader:"css-loader"
        },
        ]
      },
      {

      test: /\.less$/,

      loader: "style-loader!css-loader!less-loader", //感叹号的作用在于使同一文件能够使用不同类型的loader

      },
      {
          test: /\.js$/,
          use: {
              loader: "babel-loader",
          },
          exclude: /node_modules/
      }
    ],
  },
  plugins: [
          new HtmlWebpackPlugin({
              template: __dirname + "/src/views/index.html",
              // chunksSortMode:"dependency"
          }),
          new CleanWebpackPlugin('dist/*.*', {
              root: __dirname,
              verbose: true,
              dry: false,
          }),
          // 打包第三方类库 
          new webpack.optimize.CommonsChunkPlugin( {
              names:['vendors','manifest'],  // 添加manifest 保证vendors 的模块hash不变，
          }),
          // 暴露全局变量
          new webpack.ProvidePlugin({
              $: "jquery",
              jQuery: "jquery",
              Hammer:__dirname +"/static/hammer.min.js"
          }),
      ],

}
